#!/bin/bash
set -e

cd $(dirname $0)/..

# load .env
. scripts/functions.sh
load_env

# check for non-optional environment variables,
# which got introduced later and may miss in existing
# .env files during upgrades
if [ -z "$EXTERNAL_IPv4" ]; then
    echo "ERROR: EXTERNAL_IPv4 is not set in .env"
    echo "BBB won't work without it."
    exit 1
fi

if [ "$ENABLE_COTURN" == true ]; then
  if [ -z "$ENABLE_HTTPS_PROXY" ] && [ -z "$COTURN_TLS_CERT_PATH" ]; then
    echo "ERROR: coturn requires TLS certificates."
    echo "Either enable the https proxy for certificate retrival"
    echo "or provide a path to your certificates in .env file."
    exit 1
  fi
  if [ -z "$ENABLE_HTTPS_PROXY" ] && [ "$DEV_MODE" == true ]; then
    echo "ERROR: the https proxy can't get a certificate if ran locally and therefor coturn will never start"
    echo "you should disable coturn in .env"
    exit 1
  fi
fi

function get_tag {
  # is submodule checked out?
  if [ -f "$1/.git" ]; then
    git --git-dir=$1/.git describe --tags --always
  else
    # get cached tag name from repos/tags
    grep "$1" repos/tags | awk '{print $2}'
  fi
}

docker run  \
    --rm  \
    -v $(pwd)/docker-compose.tmpl.yml:/docker-compose.tmpl.yml \
    -e TAG_BBB=$(get_tag repos/bigbluebutton) \
    -e TAG_FREESWITCH=$(get_tag repos/freeswitch) \
    -e TAG_WEBRTC_SFU=$(get_tag repos/bbb-webrtc-sfu) \
    -e TAG_WEBHOOKS=$(get_tag repos/bbb-webhooks) \
    -e TAG_PLAYBACK=$(get_tag repos/bbb-playback) \
    -e TAG_PADS=$(get_tag repos/bbb-pads) \
    -e COMMIT_ETHERPAD_SKIN=$(get_tag repos/bbb-etherpad-skin) \
    -e COMMIT_ETHERPAD_PLUGIN=$(get_tag repos/bbb-etherpad-plugin) \
    -e DEV_MODE=${DEV_MODE:-false} \
    -e EXTERNAL_IPv6=${EXTERNAL_IPv6:-} \
    -e ENABLE_RECORDING=${ENABLE_RECORDING:-false} \
    -e ENABLE_HTTPS_PROXY=${ENABLE_HTTPS_PROXY:-false} \
    -e ENABLE_WEBHOOKS=${ENABLE_WEBHOOKS:-false} \
    -e ENABLE_COTURN=${ENABLE_COTURN:-false} \
    -e ENABLE_GREENLIGHT=${ENABLE_GREENLIGHT:-false} \
    -e ENABLE_PROMETHEUS_EXPORTER=${ENABLE_PROMETHEUS_EXPORTER:-false} \
    -e ENABLE_PROMETHEUS_EXPORTER_OPTIMIZATION=${ENABLE_PROMETHEUS_EXPORTER_OPTIMIZATION:-false} \
    -e NUMBER_OF_BACKEND_NODEJS_PROCESSES=${NUMBER_OF_BACKEND_NODEJS_PROCESSES:-1} \
    -e NUMBER_OF_FRONTEND_NODEJS_PROCESSES=${NUMBER_OF_FRONTEND_NODEJS_PROCESSES:-1} \
    jwilder/dockerize -template /docker-compose.tmpl.yml \
    > docker-compose.yml
